package com.example.game_community.service.impl;

import com.example.game_community.service.ImageStorageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.*;
import java.util.Iterator;
import java.util.Objects;
import java.util.UUID;


@Service
public class ImageStorageServiceImpl implements ImageStorageService {
//    @Value("${app.storage.temp}")
//    private String tempDirPath;
//
//    @Value("${app.storage.final}")
//    private String finalDirPath;
//
//    @Autowired
//    private ServletWebServerApplicationContext context;
//
//    @Override
//    public String storeTemp(MultipartFile file) throws IOException {
//        String tempId = UUID.randomUUID().toString();
//        String tempFilename = tempId + "_" + StringUtils.cleanPath(Objects.requireNonNull(file.getOriginalFilename()));
//
//        Path tempPath = Paths.get(tempDirPath, tempFilename);
//        Files.createDirectories(tempPath.getParent());
//        Files.copy(file.getInputStream(), tempPath, StandardCopyOption.REPLACE_EXISTING);
//        return tempFilename;
//
//    }
//
//    @Override
//    public String moveTemp(String tempUrl) {
//        try {
//            // 从URL中提取文件名
//            String fileName = tempUrl.substring(tempUrl.lastIndexOf("/") + 1);
//            System.out.println("提取文件名：" + fileName);
//            // 检查文件名格式是否正确
//            if (!fileName.contains("_")) {
//                throw new IllegalArgumentException("无效的文件名格式: " + fileName);
//            }
//
//            // 构建源文件路径
//            Path sourcePath = Paths.get(tempDirPath, fileName);
//
//            // 生成新的文件名
//            String newFileName = UUID.randomUUID().toString() + "_" + fileName.substring(fileName.indexOf("_") + 1);
//
//            // 构建目标文件路径
//            Path target = Paths.get(finalDirPath, newFileName);
//
//            // 确保目标目录存在
//            Files.createDirectories(target.getParent());
//
//            // 移动文件
//            Files.move(sourcePath, target);
//
//            // 返回新的URL
//            return "http://localhost:" + context.getWebServer().getPort() + "/images/" + newFileName;
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//
//    private Path findTempFile(String tempId) throws IOException {
//        try (DirectoryStream<Path> stream = Files.newDirectoryStream(
//                Paths.get(tempDirPath), tempId + "_*")) {
//            Iterator<Path> iterator = stream.iterator();
//            if (!iterator.hasNext()) {
//                throw new FileNotFoundException("未找到匹配的临时文件: " + tempId);
//            }
//            return iterator.next();
//        }
//    }
}

